還記得昨天被擋的情形嗎?如何解決呢。
還是記得Day22有提到,
請求的同時會把所需資料(headers, cookies, post data)一起帶入。
其實大部分的網頁都會先檢查request headers
確認對方是一個正常的行為,也就是確認是瀏覽器。
檢查request headers的哪裏呢?
user-agent : 紀錄瀏覽器、設備
假如user-agent不是瀏覽器而是python很可能被擋,所以我們要修改user-agent
接下來要來修改自己的header,讓網頁覺得我們是安全的。
這邊舉Chatgpt建議我修改的方式為例。
在原本的程式中,加入指定安全的user-agent!
import requests
from bs4 import BeautifulSoup
from urllib import request
url = 'https://www.ptt.cc/bbs/TY_Research/index.html'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
#request
req = request.Request(url, headers=headers)
#response
res = request.urlopen(req)
print(res.read().decode('utf8'))
這樣就可以成功爬取啦。
今天先到這,明天見。